import uuid

from django.db import models

# Create your models here.

class fundField(models.Model):
    '''
        @author:陈王艺阳,张沛然
        @description:
            -基金领域的基础信息
            - `fund_field_name` : 基金领域名称（String）
    '''
    fund_field_name = models.CharField(max_length=50)

class fund(models.Model):

    '''
        常量区
        负责标识基金所属类型
         - `STOCK_FUND` : 股票型基金
         - `bond_FUND` : 债券型基金
         - `HYBIRD_FUND` : 混合型基金
    '''
    STOCK_FUND = "stock_fund"
    bond_FUND = "bond_fund"
    HYBIRD_FUND = "hybrid_fund"

    '''
        @author:陈王艺阳,张沛然
        @description:
            -基金的基础信息
            - `fund_code` : 基金代码（String）
            - `fund_name` : 基金名称（String）
            - `fund_type` : 基金类型（String）
            - `fund_asset_val` : 基金总资产（String）
            - `stock_percent` : 基金资产中股票占比（String）
            - `cash_percent` : 基金资产中现金占比（String）
            - `bond_percent` : 基金资产中债券占比（String）
            - `other_percent` : 基金资产中其它资产占比（String）
            - `investment_cost_performance_1y` : 近一年的风险收益比（String）
            - `risk_control_1y` : 近一年抗风险波动（String）
            - `volatility_rank_1y` : 近一年的波动率（String）
            - `sharpe_rank_1y` : 近一年的夏普比率（String）
            - `max_draw_down_1y` : 近一年的最大回撤（String）
            - `investment_cost_performance_3y` : 近三年的风险收益比（String）
            - `risk_control_3y` : 近三年抗风险波动（String）
            - `volatility_rank_3y` : 近三年的波动率（String）
            - `sharpe_rank_3y` : 近三年的夏普比率（String）
            - `max_draw_down_3y` : 近三年的最大回撤（String）
            - `nav_grl1m` : 近一月的净值涨幅（String）
            - `nav_grl3m` : 近三月的净值涨幅（String）
            - `nav_grl6m` : 近六月的净值涨幅（String）
            - `nav_grl1y` : 近一年的净值涨幅（String）
            - `nav_grl2y` : 近两年的净值涨幅（String）
            - `nav_grl3y` : 近三年的净值涨幅（String）
            - `srank_l1m` : 近一月的业绩排名（String）
            - `srank_l3m` : 近三月的业绩排名（String）
            - `srank_l6m` : 近六个月的业绩排名（String）
            - `srank_l1y` : 近一年业绩排名（String）
            - `srank_l3y` : 近三年业绩排名（String）
            - `srank_base` : 成立以来业绩排名（String）
    '''
    fund_code = models.CharField(max_length=50)
    fund_name = models.CharField(max_length=50)
    fund_type = models.CharField(max_length=50)
    fund_asset_val = models.CharField(max_length=50)
    stock_percent = models.CharField(max_length=50)
    cash_percent = models.CharField(max_length=50)
    bond_percent = models.CharField(max_length=50)
    other_percent = models.CharField(max_length=50)
    investment_cost_performance_1y = models.CharField(max_length=50)
    risk_control_1y = models.CharField(max_length=50)
    volatility_rank_1y = models.CharField(max_length=50)
    sharpe_rank_1y = models.CharField(max_length=50)
    max_draw_down_1y = models.CharField(max_length=50)
    investment_cost_performance_3y = models.CharField(max_length=50)
    risk_control_3y = models.CharField(max_length=50)
    volatility_rank_3y = models.CharField(max_length=50)
    sharpe_rank_3y = models.CharField(max_length=50)
    max_draw_down_3y = models.CharField(max_length=50)

    nav_grl1m = models.CharField(max_length=50)
    nav_grl3m = models.CharField(max_length=50)
    nav_grl6m = models.CharField(max_length=50)
    nav_grl1y = models.CharField(max_length=50)
    nav_grl2y = models.CharField(max_length=50)
    nav_grl3y = models.CharField(max_length=50)

    srank_l1m = models.CharField(max_length=50)
    srank_l3m = models.CharField(max_length=50)
    srank_l6m = models.CharField(max_length=50)
    srank_l1y = models.CharField(max_length=50)
    srank_l3y = models.CharField(max_length=50)
    srank_base = models.CharField(max_length=50)


class fundToFundField(models.Model):
    '''
            @author:陈王艺阳,张沛然
            @description:
                - 记录了 基金 与 基金领域 关系的基础信息
                - `fund_field_id` : 基金领域ID（外键）
                - `fund_id` : 基金ID（外键）
                - `fund_percent` : 基金占比
    '''
    fund_id = models.ForeignKey(fund, on_delete=models.CASCADE)
    fund_field_id = models.ForeignKey(fundField, on_delete=models.CASCADE)
    fund_percent = models.CharField(max_length=50)